CodeIgniter এ সেশন (Session) এবং কুকিজ (Cookies) ব্যবহৃত হয় ব্যবহারকারীর তথ্য সংরক্ষণ ও পরিচালনার জন্য। সেশন এবং কুকিজ সঠিকভাবে সিকিউর না হলে নিরাপত্তাজনিত ঝুঁকি তৈরি হতে পারে। CodeIgniter এর বিল্ট-ইন টুলস ব্যবহার করে সেশন এবং কুকিজ সিকিউর করা যায়।
সেশন (Session)
সেশন কী?
Session হলো একটি ব্যবহারকারীর তথ্য সাময়িকভাবে সার্ভারে সংরক্ষণ করার একটি পদ্ধতি। এটি সাধারণত একটি সেশন আইডি ব্যবহার করে ব্যবহারকারীকে শনাক্ত করে।
সেশন কনফিগারেশন
CodeIgniter এ সেশন কনফিগারেশন app/Config/App.php ফাইলে করা হয়।
সেশন কনফিগারেশন সেটিংস
$sessionDriver, $sessionCookieName, $sessionSavePath, এবং $sessionExpiration গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার।
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionSavePath = WRITEPATH . 'session';
public $sessionExpiration = 7200; // সেশনের মেয়াদ (সেকেন্ডে)
public $sessionMatchIP = false; // আইপি মিলানোর জন্য
public $sessionTimeToUpdate = 300; // সেশন আইডি আপডেটের সময়
public $sessionRegenerateDestroy = false;
সেশন সিকিউরিটি উন্নত করা
HTTPOnly কুকিজ ব্যবহার করুন: সেশন কুকিজ জাভাস্ক্রিপ্ট থেকে অ্যাক্সেস বন্ধ করতে:
public $cookieSecure = true;আইপি মিলান সক্রিয় করুন: প্রতিটি সেশনের জন্য ব্যবহারকারীর আইপি নিশ্চিত করতে:
public $sessionMatchIP = true;
সেশন পরিচালনা
সেশন ডেটা সেট করা
Controller এ session() হেল্পার ব্যবহার করে সেশন ডেটা সেট করা যায়:
$session = session();
$session->set('user_id', 123);
$session->set('user_email', 'user@example.com');
সেশন ডেটা রিট্রিভ করা
$session = session();
$userId = $session->get('user_id');
$userEmail = $session->get('user_email');
সেশন ডেটা মুছে ফেলা
একটি নির্দিষ্ট ডেটা মুছে ফেলার জন্য:
$session->remove('user_id');
সকল সেশন ডেটা মুছে ফেলার জন্য:
$session->destroy();
কুকিজ (Cookies)
কুকিজ কী?
Cookie হলো একটি ছোট ফাইল যা ব্রাউজারের মাধ্যমে ব্যবহারকারীর ডিভাইসে সংরক্ষণ করা হয়। এটি সাধারণত ব্যবহারকারীর পছন্দ এবং লগইন তথ্য সংরক্ষণ করতে ব্যবহৃত হয়।
কুকিজ সেটিংস
CodeIgniter এ কুকিজ কনফিগারেশন app/Config/App.php ফাইলে করা হয়।
কুকিজ সিকিউরিটি কনফিগারেশন
public $cookiePrefix = ''; // কুকিজের জন্য প্রিফিক্স
public $cookieDomain = ''; // ডোমেইন যেখানে কুকিজ প্রযোজ্য
public $cookiePath = '/'; // কুকিজ প্রযোজ্য পথ
public $cookieSecure = true; // শুধুমাত্র HTTPS এর জন্য কুকিজ
public $cookieHTTPOnly = true; // জাভাস্ক্রিপ্ট থেকে কুকিজ অ্যাক্সেস নিষিদ্ধ
কুকিজ পরিচালনা
কুকিজ সেট করা
setcookie() ফাংশন ব্যবহার করে কুকিজ সেট করা যায়:
$cookie = [
'name' => 'user_preference',
'value' => 'dark_mode',
'expire' => 3600, // ১ ঘণ্টা
'path' => '/',
'secure' => true,
'httponly' => true,
];
setcookie($cookie['name'], $cookie['value'], $cookie['expire'], $cookie['path'], '', $cookie['secure'], $cookie['httponly']);
কুকিজ রিড করা
$cookieValue = $_COOKIE['user_preference'] ?? null;
কুকিজ মুছে ফেলা
setcookie('user_preference', '', time() - 3600, '/');
সেশন এবং কুকিজ সিকিউর করার সেরা চর্চা
- HTTPS ব্যবহার করুন: সেশন এবং কুকিজ সিকিউর করার জন্য HTTPS নিশ্চিত করুন এবং
cookieSecureকনফিগারেশন সক্রিয় রাখুন। HTTPOnly কুকিজ: কুকিজকে শুধুমাত্র HTTP প্রোটোকলের মাধ্যমে অ্যাক্সেসযোগ্য করে তুলুন:
public $cookieHTTPOnly = true;সেশন আইডি পুনর্জন্ম: প্রতিবার লগইন বা গুরুত্বপূর্ণ কাজের সময় সেশন আইডি পুনর্জন্ম করুন:
session()->regenerate();- সেশন ডেটা এনক্রিপশন: সেশন ডেটা সুরক্ষিত করতে CodeIgniter এর ডিফল্ট এনক্রিপশন ব্যবহার করুন।
- কুকিজের সময়সীমা নির্ধারণ করুন: অপ্রয়োজনীয় সময় পর্যন্ত কুকিজ সংরক্ষণ করবেন না।
সারাংশ
CodeIgniter এ সেশন এবং কুকিজ পরিচালনা নিরাপত্তার জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিক কনফিগারেশন এবং সেরা চর্চা অনুসরণ করলে ডেটা চুরি এবং নিরাপত্তা ঝুঁকি প্রতিরোধ করা যায়। সেশন এবং কুকিজ সিকিউর করার জন্য CodeIgniter এর বিল্ট-ইন কনফিগারেশন এবং টুলগুলো যথেষ্ট কার্যকর।